package com.zhuoyue.system.mapper;

import com.zhuoyue.common.annotation.DataSource;
import com.zhuoyue.common.core.domain.ChartData;
import com.zhuoyue.system.domain.po.SelectTimePo;
import com.zhuoyue.system.domain.po.TblAppUserPo;
import com.zhuoyue.system.domain.vo.AppUserPositionVo;
import com.zhuoyue.system.domain.vo.TblAppUserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

import static com.zhuoyue.common.enums.DataSourceType.SLAVE;

/**
 * APP用户Mapper接口
 *
 * @author hewenze
 * @date 2020-08-05
 */
@DataSource(SLAVE)
public interface TblAppUserMapper {

    /**
     * 查询用户总量
     *
     * @param tblAppUserPo
     * @return Integer数组, 分别为总量、IOS数量、安卓数量
     */
    List<Integer> selectTblAppUserCount(TblAppUserPo tblAppUserPo);

    /**
     * 查询APP用户列表
     *
     * @param tblAppUser APP用户
     * @return APP用户集合
     */
    List<TblAppUserVo> selectTblAppUserList(TblAppUserPo tblAppUser);

    /**
     * 查询推送APP用户列表(不查sourceType为null的数据)
     *
     * @param tblAppUser
     * @return
     */
    List<TblAppUserVo> selectTblAppUserPushList(TblAppUserPo tblAppUser);

    /**
     * 根据账号和组织编码查询用户
     *
     * @return APP用户
     */
    TblAppUserVo selectTblAppUserOne(@Param("account") String account, @Param("orgCode") String orgCode);

    /**
     * 查询符合条件的用户数量
     *
     * @param tblAppUser
     * @return
     */
    int selectAppUserCount(TblAppUserPo tblAppUser);

    /**
     * 查询APP用户位置列表
     *
     * @param tblAppUser
     * @return
     */
    List<AppUserPositionVo> selectAppUserPositionList(TblAppUserPo tblAppUser);

    /**
     * 查询某个时间段内用户的注册量
     *
     * @return
     */
    int getRegisterCount(SelectTimePo selectTimePo);

    /**
     * 获取前八天的用户注册量数据
     *
     * @param selectTimePo
     * @return
     */
    List<ChartData> getRegisterCountOfDays(SelectTimePo selectTimePo);


    /**
     * 获取一段时间内的用户注册量数据
     *
     * @param selectTimePo
     * @return
     */
    List<ChartData> getRegisterCountRangeTime(SelectTimePo selectTimePo);
}
